package com.powernode.interceptors;

import com.powernode.common.Constants;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


//springmvc拦截器  要先在springmvc.xml中配置一下拦截对象
@Component
public class LoginInterceptor implements HandlerInterceptor {
    /**
     * 在执行具体的Handler中的方法前执行
     * 访问不拦截servlet时不会打印所有这些消息
     * 为什么同时不拦true   是springmvc中配置拦截的打印所有消息，不拦的都不打印消息 但他们两个网页中都有数据
     *
     *
     * 返回false  是springmvc中配置拦截的不打印所有消息，只执行下面preHandle里的打印方法，，方法里web方法里有代码往网页中写数据
     * ，但网站上是空的，没有往网页中写数据，
     *
     *
     * 不拦截的不打印所有下面所有方法的消息  ，但往网页中写的有数据
     *
     * @param request  当前的请求对象
     * @param response 当前的响应对象
     * @param handler  具体的处理器中将要执行的方法
     * @return boolean  如果 返回 true 则执行Handler中的方法   false 则 不执行handler中的方法
     * 拦截器里放行放在preHandle里面
     * @throws Exception
    //     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //如果session里面有user这个对象，就说明已经登陆了
        Object user = request.getSession().getAttribute(Constants.SESSION_USER_KEY);
        if(null!=user){
            return true;
        }
//跳转到登陆页面
        response.sendRedirect(request.getServletContext().getContextPath()+"/index.html");
        return false;
    }
}